home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / AIncludes / PCCardTuples.a < prev    next >
Encoding:
Text File  |  1998-08-17  |  14.4 KB  |  388 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        PCCardTuples.a
  3. ;
  4. ;    Contains:    List of PCMCIA tuple types and definitions of tuple contents.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Release:    Universal Interfaces 3.2
  8. ;
  9. ;    Copyright:    © 1994-1998 by Apple Computer, Inc.  All rights reserved.
  10. ;
  11. ;    Bugs?:        For bug reports, consult the following page on
  12. ;                the World Wide Web:
  13. ;
  14. ;                    http://developer.apple.com/bugreporter/
  15. ;
  16. ;
  17.     IF &TYPE('__PCCARDTUPLES__') = 'UNDEFINED' THEN
  18. __PCCARDTUPLES__ SET 1
  19.  
  20.     IF &TYPE('__MACTYPES__') = 'UNDEFINED' THEN
  21.     include 'MacTypes.a'
  22.     ENDIF
  23.  
  24.  
  25. MAX_TUPLE_SIZE                    EQU        256
  26. ; ————————————————————————————————————————————————————————————————————————
  27. ;    Defines for Tuple codes
  28. ;————————————————————————————————————————————————————————————————————————
  29.  
  30.  
  31. CISTPL_NULL                        EQU        $00
  32. CISTPL_DEVICE                    EQU        $01
  33. CISTPL_LONGLINK_CB                EQU        $02
  34. CISTPL_INDIRECT                    EQU        $03
  35. CISTPL_CONFIG_CB                EQU        $04
  36. CISTPL_CFTABLE_ENTRY_CB            EQU        $05
  37. CISTPL_LONGLINK_MFC                EQU        $06
  38. CISTPL_BAR                        EQU        $07
  39. CISTPL_CHECKSUM                    EQU        $10
  40. CISTPL_LONGLINK_A                EQU        $11
  41. CISTPL_LONGLINK_C                EQU        $12
  42. CISTPL_LINKTARGET                EQU        $13
  43. CISTPL_NO_LINK                    EQU        $14
  44. CISTPL_VERS_1                    EQU        $15
  45. CISTPL_ALTSTR                    EQU        $16
  46. CISTPL_DEVICE_A                    EQU        $17
  47. CISTPL_JEDEC_C                    EQU        $18
  48. CISTPL_JEDEC_A                    EQU        $19
  49. CISTPL_CONFIG                    EQU        $1A
  50. CISTPL_CFTABLE_ENTRY            EQU        $1B
  51. CISTPL_DEVICE_OC                EQU        $1C
  52. CISTPL_DEVICE_OA                EQU        $1D
  53. CISTPL_DEVICE_GEO                EQU        $1E
  54. CISTPL_DEVICE_GEO_A                EQU        $1F
  55. CISTPL_MANFID                    EQU        $20
  56. CISTPL_FUNCID                    EQU        $21
  57. CISTPL_FUNCE                    EQU        $22
  58. CISTPL_SWIL                        EQU        $23
  59. CISTPL_VERS_2                    EQU        $40
  60. CISTPL_FORMAT                    EQU        $41
  61. CISTPL_GEOMETRY                    EQU        $42
  62. CISTPL_BYTEORDER                EQU        $43
  63. CISTPL_DATE                        EQU        $44
  64. CISTPL_BATTERY                    EQU        $45
  65. CISTPL_ORG                        EQU        $46
  66. CISTPL_VENDOR                    EQU        $FE
  67. CISTPL_END                        EQU        $FF
  68.  
  69. ; ————————————————————————————————————————————————————————————————————————
  70. ;    Tuple Data Block Definitions
  71. ;————————————————————————————————————————————————————————————————————————
  72.  
  73.  
  74. ; ------------    Device Information Tuple (01H, 17H)    -----------                            
  75.  
  76. DeviceIDTuple            RECORD 0
  77. TPLDEV_TYPE_WPS_SPEED     ds.b    1                ; offset: $0 (0)        ;  Device Type Code: 7-4, WPS: 3,  Device Speed: 2-0
  78. deviceData                 ds.b    253                ; offset: $1 (1)
  79. sizeof                     EQU *                    ; size:   $FE (254)
  80.                         ENDR
  81.  
  82. TPLDEV_TYPE_MASK                EQU        $F0                    ; device type mask for TPLDEV_TYPE_WPS_SPEED
  83. TPLDEV_TYPE_EXTENDED            EQU        $E0                    ; device type value for extended type
  84. TPLDEV_WPS_MASK                    EQU        $08                    ; write-protect switch mask for TPLDEV_TYPE_WPS_SPEED
  85. TPLDEV_SPEED_MASK                EQU        $07                    ; device speed mask for TPLDEV_TYPE_WPS_SPEED
  86. TPLDEV_DSPEED_NULL                EQU        $00                    ; speed for null device type
  87. TPLDEV_DSPEED_250NS                EQU        $01                    ; 250ns card access time
  88. TPLDEV_DSPEED_200NS                EQU        $02                    ; 200ns card access time
  89. TPLDEV_DSPEED_150NS                EQU        $03                    ; 150ns card access time
  90. TPLDEV_DSPEED_100NS                EQU        $04                    ; 100ns card access time
  91. TPLDEV_EXTENDED_SPEED            EQU        $07                    ; device speed value for extended speed
  92. TPLDEV_SPEED_EXPONENT            EQU        $07                    ; extended byte exponent mask
  93. TPLDEV_SPEED_MANTISSA            EQU        $78                    ; extended byte mantissa mask
  94. TPLDEV_SPEED_EXTENDED_MASK        EQU        $80                    ; bit set if more extended speed data follows
  95.  
  96. ;     device ID types
  97.  
  98.  
  99. DTYPE_NULL                        EQU        0
  100. DTYPE_ROM                        EQU        1
  101. DTYPE_OTPROM                    EQU        2
  102. DTYPE_EPROM                        EQU        3
  103. DTYPE_EEPROM                    EQU        4
  104. DTYPE_FLASH                        EQU        5
  105. DTYPE_SRAM                        EQU        6
  106. DTYPE_DRAM                        EQU        7
  107. DTYPE_FUNCSPEC                    EQU        $0D
  108. DTYPE_EXTEND                    EQU        $0E
  109.  
  110. ; ---------------    Checksum Control Tuple (10H)    ---------------                            
  111.  
  112. ChecksumControlTuple    RECORD 0
  113. TPLCKS_ADDR                 ds.w    1                ; offset: $0 (0)        ;  offset to region to be checksummed, LSB first
  114. TPLCKS_LEN                 ds.w    1                ; offset: $2 (2)        ;  length of region to be checksummed, LSB first
  115. TPLCKS_CS                 ds.b    1                ; offset: $4 (4)        ;  checksum of the region
  116. reserved                 ds.b    1                ; offset: $5 (5)        ;  padding
  117. sizeof                     EQU *                    ; size:   $6 (6)
  118.                         ENDR
  119. ; ----------------    Long Link Multi-Function Tuple (06H)    ------                    
  120.  
  121. LongLinkMFCTuple        RECORD 0
  122. TPLMFC_NUM                 ds.b    1                ; offset: $0 (0)        ;  Number of sets of config registers for individual functions
  123. TPLMFC_TAS1                 ds.b    1                ; offset: $1 (1)        ;  CIS target address space for first function (00 = Attr, 01 = Common)
  124. TPLMFC_ADDR1             ds.l    1                ; offset: $2 (2)        ;  Target address of first CIS, unsigned long, lsb first
  125. TPLMFC_TAS2                 ds.b    1                ; offset: $6 (6)        ;  CIS target address space for second function (00 = Attr, 01 = Common)
  126.                          ORG 8
  127. TPLMFC_ADDR2             ds.b    4                ; offset: $8 (8)        ;  [MISALIGNED!] Target address of second CIS, unsigned long, lsb first
  128. ;  the following fields are of undetermined length and should be calculated at runtime
  129. ;  
  130. ;  UInt8        TPLMFC_TASn;
  131. ;  UInt32        TPLMFC_ADDRn;
  132. sizeof                     EQU *                    ; size:   $C (12)
  133.                         ENDR
  134. ; ----------------    Long Link Tuple (11H, 12H)    ----------------                            
  135.  
  136. LongLinkTuple            RECORD 0
  137. TPLL_ADDR                 ds.l    1                ; offset: $0 (0)        ;  target address, LSB first
  138. sizeof                     EQU *                    ; size:   $4 (4)
  139.                         ENDR
  140. ; -----------------    Link Target Tuple (13H)    ------------------                            
  141.  
  142. LinkTargetTuple            RECORD 0
  143. TPLL_TAG                 ds.b    3                ; offset: $0 (0)        ;  tag: should be 'C', 'I', 'S'
  144.                          ORG 4
  145. sizeof                     EQU *                    ; size:   $4 (4)
  146.                         ENDR
  147. ; ----------------    Level 1 Version Tuple (15H)    ---------------                            
  148.  
  149. Level1VersionTuple        RECORD 0
  150. TPLLV1_MAJOR             ds.b    1                ; offset: $0 (0)        ;  major version number (0x04)
  151. TPLLV1_MINOR             ds.b    1                ; offset: $1 (1)        ;  minor version number (0x01 for release 2.0 and 2.01)
  152. TPLLV1_INFO                 ds.b    1                ; offset: $2 (2) <-- really an array of length one ;  product information string, zero-terminated
  153.                          ORG 4
  154. sizeof                     EQU *                    ; size:   $4 (4)
  155.                         ENDR
  156. ; -------------    JEDEC Identifier Tuple (18H, 19H)    ------------                            
  157.  
  158. JEDECDeviceInfo            RECORD 0
  159. manufacturerID             ds.b    1                ; offset: $0 (0)
  160. manufacturerInfo         ds.b    1                ; offset: $1 (1)
  161. sizeof                     EQU *                    ; size:   $2 (2)
  162.                         ENDR
  163. JEDECIdentifierTuple    RECORD 0
  164. device                     ds        JEDECDeviceInfo ; offset: $0 (0) <-- really an array of length one
  165. sizeof                     EQU *                    ; size:   $2 (2)
  166.                         ENDR
  167. ; ---------    Configuration Tuple (1AH)    ----------                            
  168.  
  169. ConfigTuple                RECORD 0
  170. TPCC_SZ                     ds.b    1                ; offset: $0 (0)        ;  size of fields byte
  171. TPCC_LAST                 ds.b    1                ; offset: $1 (1)        ;  index number of last config entry
  172. TPCC_RADR                 ds.b    1                ; offset: $2 (2)        ;  config reg's base addr in reg. space
  173. reserved                 ds.b    1                ; offset: $3 (3)        ;  padding
  174. ;  the following fields are of undetermined length and should be calculated at runtime
  175. ; UInt32            TPCC_RMSK;
  176. ; UInt32            TPCC_RSVD;
  177. ; UInt32            TPCC_SBTPL;
  178. sizeof                     EQU *                    ; size:   $4 (4)
  179.                         ENDR
  180. ;     TPCC_RADR field definitions
  181.  
  182. TPCC_RASZ                        EQU        $03                    ; bits 1-0
  183. TPCC_RMSZ                        EQU        $3C                    ; bits 5-2
  184. TPCC_RFSZ                        EQU        $C0                    ; bits 7-6
  185.  
  186. ; ---------    Device Geometry Tuple (1EH, 1FH)    ----------
  187.  
  188. DeviceGeometry            RECORD 0
  189. DGTPL_BUS                 ds.b    1                ; offset: $0 (0)        ;  system bus width = 2^(n-1), n>0
  190. DGTPL_EBS                 ds.b    1                ; offset: $1 (1)        ;  erase block size = 2^(n-1), n>0
  191. DGTPL_RBS                 ds.b    1                ; offset: $2 (2)        ;  read block size = 2^(n-1), n>0
  192. DGTPL_WBS                 ds.b    1                ; offset: $3 (3)        ;  write block size = 2^(n-1), n>0
  193. DGTPL_PART                 ds.b    1                ; offset: $4 (4)        ;  partitioning size = 2^(n-1), n>0
  194. DGTPL_HWIL                 ds.b    1                ; offset: $5 (5)        ;  hardware interleave = 2^(n-1), n>0
  195. sizeof                     EQU *                    ; size:   $6 (6)
  196.                         ENDR
  197. DeviceGeometryTuple        RECORD 0
  198. device                     ds.b    42 * DeviceGeometry.sizeof ; offset: $0 (0)
  199. sizeof                     EQU *                    ; size:   $FC (252)
  200.                         ENDR
  201. ; ---------    Manufacturer Identification Tuple (20H)    ----------                            
  202.  
  203. ManufIDTuple            RECORD 0
  204. TPLMID_MANF                 ds.w    1                ; offset: $0 (0)        ;  PCMCIA PC Card manufacturer code
  205. TPLMID_CARD                 ds.w    1                ; offset: $2 (2)        ;  manufacturer information (part number and/or revision)
  206. sizeof                     EQU *                    ; size:   $4 (4)
  207.                         ENDR
  208. ; -----------    Function Identification Tuple (21H)    ------------                            
  209.  
  210. FunctionIDTuple            RECORD 0
  211. TPLFID_FUNCTION             ds.b    1                ; offset: $0 (0)        ;  PC card function code
  212. TPLFID_SYSINIT             ds.b    1                ; offset: $1 (1)        ;  system initialization bit mask
  213. sizeof                     EQU *                    ; size:   $2 (2)
  214.                         ENDR
  215. ;     function codes
  216.  
  217. TPLFID_MultiFunction            EQU        0
  218. TPLFID_Memory                    EQU        1
  219. TPLFID_SerialPort                EQU        2
  220. TPLFID_ParallelPort                EQU        3
  221. TPLFID_FixedDisk                EQU        4
  222. TPLFID_VideoAdapter                EQU        5
  223. TPLFID_NetworkLANAdapter        EQU        6
  224. TPLFID_AIMS                        EQU        7
  225. TPLFID_SCSI                        EQU        8
  226. TPLFID_Security                    EQU        9
  227.  
  228. ; ------------    Software Interleave Tuple (23H)    ---------------                            
  229.  
  230. SoftwareInterleaveTuple    RECORD 0
  231. TPLSWIL_INTRLV             ds.b    1                ; offset: $0 (0)        ;  software interleave
  232.                          ORG 2
  233. sizeof                     EQU *                    ; size:   $2 (2)
  234.                         ENDR
  235. ; -------    Level 2 Version and Information Tuple (40H)    --------                            
  236.  
  237. Level2VersionTuple        RECORD 0
  238. TPLLV2_VERS                 ds.b    1                ; offset: $0 (0)        ;  structure version (0x00)
  239. TPLLV2_COMPLY             ds.b    1                ; offset: $1 (1)        ;  level of compliance with the standard (0x00)
  240. TPLLV2_DINDEX             ds.w    1                ; offset: $2 (2)        ;  byte address of first data byte in card, LSB first
  241. TPLLV2_RSV6                 ds.b    1                ; offset: $4 (4)        ;  reserved, must be zero
  242. TPLLV2_RSV7                 ds.b    1                ; offset: $5 (5)        ;  reserved, must be zero
  243. TPLLV2_VSPEC8             ds.b    1                ; offset: $6 (6)        ;  vendor specific byte
  244. TPLLV2_VSPEC9             ds.b    1                ; offset: $7 (7)        ;  vendor specific byte
  245. TPLLV2_NHDR                 ds.b    1                ; offset: $8 (8)        ;  number of copies of CIS present on this device
  246. TPLLV2_OEM                 ds.b    1                ; offset: $9 (9) <-- really an array of length one ;  vendor of software that formatted card, zero-terminated
  247. TPLLV2_INFO                 ds.b    1                ; offset: $A (10) <-- really an array of length one ;  informational message about the card, zero-terminated
  248. reserved                 ds.b    1                ; offset: $B (11)        ;  padding
  249. sizeof                     EQU *                    ; size:   $C (12)
  250.                         ENDR
  251. ; --------------------    Format Tuple (41H)    --------------------                            
  252.  
  253. ;  additional information for disk type:
  254.  
  255. FormatDiskTuple            RECORD 0
  256. TPLFMT_BKSZ                 ds.w    1                ; offset: $0 (0)        ;     block size, or zero if unblocked format
  257. TPLFMT_NBLOCKS             ds.l    1                ; offset: $2 (2)        ;     number of data blocks in this partition
  258. TPLFMT_EDCLOC             ds.l    1                ; offset: $6 (6)        ;     location of error detection code, or zero if interleaved
  259. sizeof                     EQU *                    ; size:   $A (10)
  260.                         ENDR
  261. ;  additional information for disk type:
  262. FormatMemTuple            RECORD 0
  263. TPLFMT_FLAGS             ds.b    1                ; offset: $0 (0)        ;     various flags
  264. TPLFMT_RESERVED             ds.b    1                ; offset: $1 (1)        ;     reserved, set to zero
  265. TPLFMT_ADDRESS             ds.l    1                ; offset: $2 (2)        ;     physical location at which this memory partion must be mapped
  266. TPLFMT_EDCLOC             ds.l    1                ; offset: $6 (6)        ;     location of error detection code, or zero if interleaved
  267. sizeof                     EQU *                    ; size:   $A (10)
  268.                         ENDR
  269. FormatTuple                RECORD 0
  270. TPLFMT_TYPE                 ds.b    1                ; offset: $0 (0)        ;  format type code
  271. TPLFMT_EDC                 ds.b    1                ; offset: $1 (1)        ;  error detection method and length of error detection code
  272. TPLFMT_OFFSET             ds.l    1                ; offset: $2 (2)        ;  offset to first data byte in this partition
  273. TPLFMT_NBYTES             ds.l    1                ; offset: $6 (6)        ;  number of data bytes in this partition
  274. TPLFMT_DISK                 ds        FormatDiskTuple ; offset: $A (10)
  275.                          ORG 10
  276. TPLFMT_MEM                 ds        FormatMemTuple ; offset: $A (10)
  277. sizeof                     EQU *                    ; size:   $14 (20)
  278.                         ENDR
  279. ;     format types
  280.  
  281. TPLFMTTYPE_DISK                    EQU        0
  282. TPLFMTTYPE_MEM                    EQU        1
  283. TPLFMTTYPE_VS                    EQU        $80
  284. ;     error detection types
  285.  
  286.  
  287. TPLFMTEDC_NONE                    EQU        0
  288. TPLFMTEDC_CKSUM                    EQU        1
  289. TPLFMTEDC_CRC                    EQU        2
  290. TPLFMTEDC_PCC                    EQU        3
  291. TPLFMTEDC_VS                    EQU        8
  292. ;     bits in TPLFMT_FLAGS
  293.  
  294.  
  295. TPLFMTFLAGS_ADDR                EQU        0
  296. TPLFMTFLAGS_AUTO                EQU        1
  297.  
  298. ; ------------------    Geometry Tuple (42H)    --------------------                            
  299.  
  300. GeometryTuple            RECORD 0
  301. TPLGEO_SPT                 ds.b    1                ; offset: $0 (0)        ;  number of sectors per track
  302. TPLGEO_TPC                 ds.b    1                ; offset: $1 (1)        ;  number of tracks per cylinder
  303. TPLGEO_NCYL                 ds.w    1                ; offset: $2 (2)        ;  number of cylinders, total
  304. sizeof                     EQU *                    ; size:   $4 (4)
  305.                         ENDR
  306. ; -----------------    Byte-Order Tuple (43H)    -------------------                            
  307.  
  308. ByteOrderTuple            RECORD 0
  309. TPLBYTE_ORDER             ds.b    1                ; offset: $0 (0)        ;  byte order code
  310. TPLBYTE_MAP                 ds.b    1                ; offset: $1 (1)        ;  byte mapping code
  311. sizeof                     EQU *                    ; size:   $2 (2)
  312.                         ENDR
  313. ;     byte order codes
  314.  
  315. TYPBYTEORD_LOW                    EQU        0
  316. TYPBYTEORD_HIGH                    EQU        1
  317. TYPBYTEORD_VS                    EQU        $80
  318. ;     byte mapping codes
  319.  
  320.  
  321. TYPBYTEMAP_LOW                    EQU        0
  322. TYPBYTEMAP_HIGH                    EQU        1
  323. TYPBYTEMAP_VS                    EQU        $80
  324.  
  325. ; ----------    Card Initialization Date Tuple (44H)    ------------                            
  326.  
  327. CardInitDateTuple        RECORD 0
  328. TPLDATE_TIME             ds.w    1                ; offset: $0 (0)        ;  hours, minutes, seconds
  329. TPLDATE_DAY                 ds.w    1                ; offset: $2 (2)        ;  year, month, day
  330. sizeof                     EQU *                    ; size:   $4 (4)
  331.                         ENDR
  332. ; ----------    Battery-Replacement Date Tuple (45H)    ------------                            
  333.  
  334. BatteryReplaceDateTuple    RECORD 0
  335. TPLBATT_RDAY             ds.w    1                ; offset: $0 (0)        ;  last replacement date (year, month, day)
  336. TPLBATT_XDAY             ds.w    1                ; offset: $2 (2)        ;  battery expiration date (year, month, day)
  337. sizeof                     EQU *                    ; size:   $4 (4)
  338.                         ENDR
  339.  
  340. ; ----------------------    General Tuple    -----------------------                            
  341.  
  342. TupleBody                RECORD 0
  343. deviceID                 ds        DeviceIDTuple    ; offset: $0 (0)
  344.                          ORG 0
  345. checksum                 ds        ChecksumControlTuple ; offset: $0 (0)
  346.                          ORG 0
  347. link                     ds        LongLinkTuple    ; offset: $0 (0)
  348.                          ORG 0
  349. target                     ds        LinkTargetTuple ; offset: $0 (0)
  350.                          ORG 0
  351. level1                     ds        Level1VersionTuple ; offset: $0 (0)
  352.                          ORG 0
  353. jedecID                     ds        JEDECIdentifierTuple ; offset: $0 (0)
  354.                          ORG 0
  355. config                     ds        ConfigTuple        ; offset: $0 (0)
  356.                          ORG 0
  357. devGeo                     ds        DeviceGeometryTuple ; offset: $0 (0)
  358.                          ORG 0
  359. manufID                     ds        ManufIDTuple    ; offset: $0 (0)
  360.                          ORG 0
  361. funcID                     ds        FunctionIDTuple ; offset: $0 (0)
  362.                          ORG 0
  363. swil                     ds        SoftwareInterleaveTuple ; offset: $0 (0)
  364.                          ORG 0
  365. level2                     ds        Level2VersionTuple ; offset: $0 (0)
  366.                          ORG 0
  367. format                     ds        FormatTuple        ; offset: $0 (0)
  368.                          ORG 0
  369. geometry                 ds        GeometryTuple    ; offset: $0 (0)
  370.                          ORG 0
  371. order                     ds        ByteOrderTuple ; offset: $0 (0)
  372.                          ORG 0
  373. initDate                 ds        CardInitDateTuple ; offset: $0 (0)
  374.                          ORG 0
  375. battDate                 ds        BatteryReplaceDateTuple ; offset: $0 (0)
  376.                          ORG 0
  377. tupleData                 ds.b    254                ; offset: $0 (0)
  378. sizeof                     EQU *                    ; size:   $FE (254)
  379.                         ENDR
  380. Tuple                    RECORD 0
  381. TPL_CODE                 ds.b    1                ; offset: $0 (0)
  382. TPL_LINK                 ds.b    1                ; offset: $1 (1)
  383. TPL_BODY                 ds        TupleBody        ; offset: $2 (2)
  384. sizeof                     EQU *                    ; size:   $100 (256)
  385.                         ENDR
  386.     ENDIF ; __PCCARDTUPLES__ 
  387.  
  388.